/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.ufc.quixada.service;

import br.com.ufc.quixada.dao.ExemplarDAO;
import br.com.ufc.quixada.entidades.Exemplar;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author FuscaoGames
 */
public class ExemplarService {

    private ExemplarDAO exemplarDAO;

    public ExemplarService() throws ClassNotFoundException {
        exemplarDAO = new ExemplarDAO();
    }

    /**
     * Metodo que retorna a lista de todos os cliente cadastrados
     * @return ArrayList<Clientes> - um ArrayList de objetos Cliente
     */
    public ArrayList<Exemplar> listExemplar() {
        ArrayList<Exemplar> exemplares = new ArrayList<Exemplar>();
        try {
            //chama o metodo do alunoDAO
            exemplares = exemplarDAO.listaExemplar();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return exemplares;
    }

    /**
     * Metodo utilizado para adicionar um cliente a base de dados
     * cadastro do cliente
     * @return boolean - true se o cliente for adicionado com sucesso e false caso contrario
     * @param cliente - objeto Cliente a ser armazenado
     */
    public boolean addExemplar(Exemplar exemplar) {
        try {
            exemplarDAO.inserirExemplar(exemplar);
            return true;
        } catch (SQLException e) {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * Metodo Utilizado para remover um cliente da base de dados
     * @return boolean - true se o cliente for removido com sucesso e false caso contrario
     * @param cliente - objeto Cliente a ser removido
     */
    public boolean deleteExemplar(Exemplar exemplar) {
        try {
            exemplarDAO.deleteExemplar(exemplar);
            return true;
        } catch (SQLException e) {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * Metodo utilizado para atualizar os dados do cliente na base de dados.
     * @return boolean - true se o cliente for atualizado com sucesso e false caso contrario
     * @param cliente - objeto Cliente a ser atualizado
     */
    public boolean updateExemplar(Exemplar exemplar) {
        try {
            exemplarDAO.updateExemplar(exemplar);
            return true;
        } catch (SQLException e) {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * Metodo utilizado para buscar um cliente pelo cpf
     * @param cpf - CPF do cliente
     * @return cliente - objeto Cliente referente ao CPF passada ou null
     * caso nao exista
     */
    public Exemplar exemplarfindByCodigo(long codexemplar) {
        Exemplar exemplar = null;
        try {
            exemplar = exemplarDAO.listaExemplarByCodigo(codexemplar);
            return exemplar;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * Metodo utilizado para buscar um cliente pelo email
     * @param email - Email do cliente
     * @return cliente - objeto Cliente referente ao Email passada ou null
     * caso nao exista
     */
    public ArrayList<Exemplar> exemplaresfindByFilme(long filme) {
        ArrayList<Exemplar> exemplares = null;
        try {
            exemplares = exemplarDAO.listaExemplarByFilme(filme);
            return exemplares;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

}
